using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("CardEffect")]
	public class CardEffect : MonoClass
	{
		public Spell m_spell => method_3<Spell>("m_spell");

		public List<CardSoundSpell> m_soundSpells => method_3<Class271<CardSoundSpell>>("m_soundSpells")?.method_25();

		public string m_spellPath => method_4("m_spellPath");

		public List<string> m_soundSpellPaths => method_3<Class272>("m_soundSpellPaths")?.method_25();

		public Card m_owner => method_3<Card>("m_owner");

		public CardEffect(IntPtr address, string className)
			: base(address, className)
		{
		}

		public CardEffect(IntPtr address)
			: this(address, "CardEffect")
		{
		}

		public Spell GetSpell(bool loadIfNeeded)
		{
			return method_14<Spell>("GetSpell", new object[1] { loadIfNeeded });
		}

		public void LoadSoundSpell(int index)
		{
			method_8("LoadSoundSpell", index);
		}

		public List<CardSoundSpell> GetSoundSpells(bool loadIfNeeded)
		{
			return method_14<Class271<CardSoundSpell>>("GetSoundSpells", new object[1] { loadIfNeeded })?.method_25();
		}

		public void Clear()
		{
			method_8("Clear");
		}

		public void LoadAll()
		{
			method_8("LoadAll");
		}

		public void PurgeSpells()
		{
			method_8("PurgeSpells");
		}

		public void DestroySpell(Spell spell)
		{
			method_8("DestroySpell", spell);
		}
	}
}
